// -------------------------------------------------------------------------
// Copyright (c) 2000-2009 Ufinity. All Rights Reserved.
//
// This software is the confidential and proprietary information of
// Ufinity
//
// Original author: lxt
//
// -------------------------------------------------------------------------
// UFINITY MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
// THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
// TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
// PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UFINITY SHALL NOT BE
// LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
//
// THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE
// CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE
// PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT
// NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE
// SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE
// SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE
// PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). UFINITY
// SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR
// HIGH RISK ACTIVITIES.
// -------------------------------------------------------------------------

package com.ufinity.estimation.service.impl;

import java.util.Iterator;
import java.util.List;

import org.apache.commons.lang.xwork.StringUtils;

import com.cn.ufinity.common.log.LoggerFactory;
import com.ufinity.estimation.persistence.domain.HouseStructureTemplate;
import com.ufinity.estimation.persistence.domain.HouseStructureTemplateDetail;
import com.ufinity.estimation.service.HouseStructureTemplateService;

/**
 * Description of the class
 * 
 * @author lxt
 * @version 1.0
 * @since 2009-12-14
 */

public class HouseStructureTemplateServiceImpl extends
        BaseServiceImpl<HouseStructureTemplate, Long> implements
        HouseStructureTemplateService {
    public HouseStructureTemplateServiceImpl() {
        super(LoggerFactory
                .getPersistenceLog(HouseStructureTemplateServiceImpl.class),
                HouseStructureTemplate.class);
    }

    @Override
    public void updateHouseStructureTemplate(HouseStructureTemplate entity,
            List<String> structures) {
        HouseStructureTemplate oldHST = findEntityById(entity.getId());
        Iterator<HouseStructureTemplateDetail> hstdIterator = oldHST
                .getHouseStructureTemplateDetails().iterator();
        int index = 0;
        while(hstdIterator.hasNext()) {
            HouseStructureTemplateDetail hstd = hstdIterator.next();
            hstd.setStructureName(structures.get(index));
            index++;
        }
        
        for (int i = index; i < structures.size(); i++) {
            if (!StringUtils.isBlank(structures.get(i))) {
                HouseStructureTemplateDetail hstd = new HouseStructureTemplateDetail();
                hstd.setStructureName(structures.get(i));
                hstd.setOrder(i);
                hstd.setHstId(entity.getId());
                oldHST.getHouseStructureTemplateDetails().add(hstd);
            }
        }
        
        oldHST.setName(entity.getName());
        oldHST.setRemark(entity.getRemark());
        updateEntity(oldHST);
    }

    @Override
    public void saveEntity(HouseStructureTemplate entity,
            List<String> structures) {
        saveEntity(entity);
        updateHouseStructureTemplate(entity, structures);
    }

}
